#include "GeemFunction.hpp"
#include <cmath>
#include <iostream>


void GeemFunction::operator()(Specimen &argument)
{
  Gene fx = 4.0*pow(argument[0],2) - 2.1*pow(argument[0],4) 
    + (1.0/3.0)*pow(argument[0],6) + argument[0]*argument[1] 
    - 4.0*pow(argument[1],2) + 4.0*pow(argument[1],4);
  // Gene fx = 4.0*pow(argument[0],2);
//   std::cerr<<fx<<std::endl;
//   fx+= - 2.1*pow(argument[0],4);
//   std::cerr<<fx<<std::endl;
//  fx+= + (1.0/3.0)*pow(argument[0],6); 
//  std::cerr<<fx<<std::endl;
//   fx+= argument[0]*argument[1]; 
//   std::cerr<<fx<<std::endl;
// fx+=- 4.0*pow(argument[1],2);
//  std::cerr<<fx<<std::endl;
//  fx+= 4.0*pow(argument[1],4);
//     std::cerr<<fx<<std::endl;
//     std::cerr<<argument[1]<<" "<<(4,argument[1])<<std::endl;
  argument.setFitness(fx);
}

/*
double geem(double x1, double x2)
{
	double fx = 4.0*pow(x1,2) - 2.1*pow(x1,4) + (1.0/3.0)*pow(x1,6) + x1*x2 - 4.0*pow(x2,2) + 4.0*(x2,4);
	return fx;
}
*/
